From 51e2cac257ec8b4080d89f0855c498cbbd76a5e5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roger=20Pau=20Monn=C3=A9?= Date: Tue, 26 Nov 2013 09:52:47 +0100 Subject: [PATCH] x86/pvh: set only minimal cr0 and cr4 flags in order to use paging MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Right now Xen sets the WP and NE flags on cr0 for PVH, which are not needed in order to boot with paging enabled. The same happens with cr4, at least on my system OSFXSR, OSXMMEXCPT and MCE are enabled by default when there's no need. Signed-off-by: Roger Pau Monné Acked-by: George Dunlap Acked-by: Mukesh Rathor Acked-by: Eddie Dong --- xen/arch/x86/hvm/vmx/vmcs.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/xen/arch/x86/hvm/vmx/vmcs.c b/xen/arch/x86/hvm/vmx/vmcs.c index 4aab971992..44f33cb802 100644 --- a/xen/arch/x86/hvm/vmx/vmcs.c +++ b/xen/arch/x86/hvm/vmx/vmcs.c @@ -28,7 +28,6 @@ #include #include #include -#include #include #include #include @@ -1090,13 +1089,11 @@ static int construct_vmcs(struct vcpu *v) /* PVH domains always start in paging mode */ if ( is_pvh_domain(d) ) - v->arch.hvm_vcpu.guest_cr[0] |= X86_CR0_PG | X86_CR0_NE | X86_CR0_WP; + v->arch.hvm_vcpu.guest_cr[0] |= X86_CR0_PG; hvm_update_guest_cr(v, 0); - v->arch.hvm_vcpu.guest_cr[4] = is_pvh_domain(d) ? - (real_cr4_to_pv_guest_cr4(mmu_cr4_features) - & ~HVM_CR4_GUEST_RESERVED_BITS(v)) : 0; + v->arch.hvm_vcpu.guest_cr[4] = is_pvh_domain(d) ? X86_CR4_PAE : 0; hvm_update_guest_cr(v, 4); if ( cpu_has_vmx_tpr_shadow ) -- 2.30.2